<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
    递归
        递归是指函数内部调用自身的方法(自己调用自己)
    -->
    <script>
        // 例子：
        // let index = 1;
        // function fn() {
        //     index++;
        //     console.log(index);
        //     if (index == 10) {
        //         return;
        //     };
        //     fn();
        // };
        // fn();


        // 1-100累加
        // let sum = 0;
        // for (let i = 1; i <= 100; i++) {
        //     sum += i;
        // };
        // console.log(sum);


        // 递归
        // 定义一个函数，实现累加
        let num = 3;
        // 1 + 2 + 3

        function sum(n) {
            // 终止条件
            if (n == 0) {
                return 0;
            };

            return sum(n - 1) + n;

            // 过程
            // sum(3) ------> sum(n - 1) + n -----> sum(2) + 3 ---> 3 + 3
            // sum(2) ------> sum(n - 1) + n -----> sum(1) + 2 ---> 3
            // sum(1) ------> sum(n - 1) + n -----> sum(0) + 1 ---> 1
            // 执行栈(调用栈)--->先进后出
        };
        // console.log(sum(num));


        // 使用递归
        // 实现5的阶乘
        // 1 * 2 * 3 * 4 * 5 = 120

        function mul(n) {
            if (n == 0 || n == 1) {
                return 1;
            }

            return mul(n - 1) * n;
        };
        console.log(mul(5));
    </script>
</body>

</html>